package demo2;
//使用关键字interface来定义接口
//接口不能被实例化
//接口当中的成员默认是public static final的（静态常量）
//接口当中的方法 不写也是默认为public abstract的
//接口当中的方法不能有具体的实现 但是从jdk8开始 可以写一个default修饰的方法
//接口当中不能有构造方法
//接口需要被类实现 使用关键字implements
//接口当中可以有static修饰的方法

interface IShape {
    String name = "1";
    /*public String name = "1";
    public static String name2 = "1";
    public static final String name3 = "1";*/

    //public abstract void draw();
    // 默认为抽象方法 默认为public abstract
    void draw();

    /*default public void func() {//默认方法
        System.out.println("默认的");
    }//不能有具体实现的方法*/
    public static void staticFunc() {
        System.out.println("staticFunc");
    }
}
class Rect implements IShape {
    @Override
    public void draw() {//重写draw方法
        System.out.println("矩形");
    }

    /*@Override
    public void func() {
        System.out.println("重写这个方法");
    }*/
}
class Flower implements IShape {
    @Override
    public void draw() {
        System.out.println("❀");
    }
}
public class Test {
    public static void drawMap(IShape shape) {
        shape.draw();
    }
    public static void main(String[] args) {
        //IShape shape = new IShape();接口不能被实例化
        IShape shape = new Rect();//向上转型
        //Rect rect = new Rect();
        IShape shape2 = new Flower();//向上转型

        drawMap(shape);
        drawMap(shape2);

        IShape.staticFunc();//静态的通过类名调用
    }
}
